const { observable, action } = require('mobx-miniprogram');

// PLM项目状态管理
const projectStore = observable({
  // 项目列表
  projectList: [],
  
  // 当前项目
  currentProject: null,
  
  // 加载状态
  loading: false,
  
  // 错误信息
  error: null,
  
  // 加载项目列表
  loadProjectList: action(function(params = {}) {
    this.loading = true;
    this.error = null;
    
    // 模拟API请求延迟
    setTimeout(() => {
      try {
        // 模拟数据，实际应从API获取
        this.projectList = [
          {
            _id: 'p001',
            name: '产品A设计项目',
            desc: '包含产品A的全生命周期设计流程',
            status: '进行中'
          },
          {
            _id: 'p002',
            name: '产品B研发计划',
            desc: '产品B的研发规划与执行',
            status: '规划中'
          },
          {
            _id: 'p003',
            name: '产品C升级方案',
            desc: '针对产品C的功能升级与优化',
            status: '已完成'
          }
        ];
        this.loading = false;
      } catch (err) {
        this.error = err.message || '加载项目列表失败';
        this.loading = false;
        console.error('加载项目列表失败:', err);
      }
    }, 500);
  }),
  
  // 加载项目详情
  loadProjectDetail: action(function(id) {
    this.loading = true;
    this.error = null;
    
    // 模拟API请求延迟
    setTimeout(() => {
      try {
        // 根据ID获取项目详情
        const project = this.projectList.find(item => item._id === id);
        if (project) {
          this.currentProject = project;
        } else {
          this.error = '找不到指定项目';
        }
        this.loading = false;
      } catch (err) {
        this.error = err.message || '加载项目详情失败';
        this.loading = false;
        console.error('加载项目详情失败:', err);
      }
    }, 500);
  }),
  
  // 添加 getProjectDetail 方法适配页面调用
  getProjectDetail: action(function(id) {
    return this.loadProjectDetail(id);
  }),
  
  // 创建项目
  createProject: action(function(projectData) {
    this.loading = true;
    this.error = null;
    
    // 模拟API请求延迟
    setTimeout(() => {
      try {
        // 模拟创建项目
        const newId = 'p' + (Math.floor(Math.random() * 10000)).toString().padStart(3, '0');
        const newProject = {
          _id: newId,
          ...projectData,
          createdAt: new Date().getTime()
        };
        
        this.projectList.push(newProject);
        this.currentProject = newProject;
        this.loading = false;
        
        return newId;
      } catch (err) {
        this.error = err.message || '创建项目失败';
        this.loading = false;
        console.error('创建项目失败:', err);
      }
    }, 500);
  }),
  
  // 更新项目
  updateProject: action(function(projectData) {
    this.loading = true;
    this.error = null;
    
    // 模拟API请求延迟
    setTimeout(() => {
      try {
        // 查找并更新项目
        const index = this.projectList.findIndex(p => p._id === projectData._id);
        if (index >= 0) {
          this.projectList[index] = {
            ...this.projectList[index],
            ...projectData,
            updatedAt: new Date().getTime()
          };
          this.currentProject = this.projectList[index];
        } else {
          throw new Error('找不到要更新的项目');
        }
        this.loading = false;
      } catch (err) {
        this.error = err.message || '更新项目失败';
        this.loading = false;
        console.error('更新项目失败:', err);
      }
    }, 500);
  }),
  
  // 重置当前项目
  resetCurrentProject: action(function() {
    this.currentProject = null;
  }),
  
  // 清空项目状态
  clearProject: action(function() {
    console.log('clearProject被调用 - 清空当前项目');
    this.currentProject = null;
  }),
  
  // 清除所有缓存
  clearAllCache: action(function() {
    this.projectList = [];
    this.currentProject = null;
    this.loading = false;
    this.error = null;
  })
});

module.exports = { projectStore }; 